<p>Additional resource types used by your pipeline.</p>

<p>Each resource in a pipeline has a <code>type</code>. The resource's type determines
what versions are detected, the bits that are fetched when used for a
<a href="get-step.html"><code>get</code></a> step, and the side effect that occurs when used for a
<a href="put-step.html"><code>put</code></a> step.</p><p>Out of the box, Concourse comes with a few resource types to cover common CI
use cases like dealing with Git repositories and S3 buckets.</p><p>Beyond these core types, each pipeline can configure its own custom types by
specifying <code>resource_types</code> at the top level. Each custom resource type is
itself defined as a resource that provides the container image for the custom
resource type (see <a href="implementing-resources.html">Implementing a Resource</a>). You will almost always
be using the
<a href="https://github.com/concourse/docker-image-resource"><code>docker-image</code>
resource type</a> when doing this.</p><p>The following example extends a Concourse pipeline to support use of the
<a href="https://github.com/jtarchie/pullrequest-resource"><code>pull-request</code>
resource type</a> and then uses it within the pipeline:</p><div class="highlight"><pre class="verbatim"><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">resource_types</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t"></span><span class="pi">-</span><span class="t"></span><span class="t"> </span><span class="t"></span><span class="nv"></span><span class="py">name</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">pull-request</span><span class="t">
</span><span class="t">  </span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">type</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">docker-image</span><span class="t">
</span><span class="t">  </span><span class="py">source</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t">    </span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">repository</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">jtarchie/pr</span><span class="t">

</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">resources</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t"></span><span class="pi">-</span><span class="t"></span><span class="t"> </span><span class="t"></span><span class="nv"></span><span class="py">name</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">atomy-pr</span><span class="t">
</span><span class="t">  </span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">type</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">pull-request</span><span class="t">
</span><span class="t">  </span><span class="py">source</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t">    </span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">repo</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">vito/atomy</span><span class="t">
</span><span class="t">    </span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">access_token</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="pi">{</span><span class="pi">{</span><span class="nv"></span><span class="nv">access-token</span><span class="t"></span><span class="pi">}</span><span class="pi">}</span><span class="t"></span><span class="t"></span><span class="t">

</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">jobs</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t"></span><span class="pi">-</span><span class="t"></span><span class="t"> </span><span class="t"></span><span class="nv"></span><span class="py">name</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">atomy-pr-unit</span><span class="t">
</span><span class="t">  </span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">plan</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t">  </span><span class="pi">-</span><span class="t"></span><span class="t"> </span><span class="t"></span><span class="nv"></span><span class="py">get</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">atomy-pr</span><span class="t">
</span><span class="t">  </span><span class="t"></span><span class="t"></span><span class="pi">-</span><span class="t"></span><span class="t"> </span><span class="t"></span><span class="nv"></span><span class="py">put</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">atomy-pr</span><span class="t">
</span><span class="t">    </span><span class="py">params</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t">      </span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">path</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">atomy-pr</span><span class="t">
</span><span class="t">      </span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">status</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">pending</span><span class="t">
</span><span class="t">  </span><span class="nv">-</span><span class="sp"> </span><span class="py">task</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">unit</span><span class="t">
</span><span class="t">    </span><span class="py">file</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">atomy-pr/ci/unit.yml</span><span class="t">
</span><span class="t">    </span><span class="py">on_success</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t">      </span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">put</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">atomy-pr</span><span class="t">
</span><span class="t">      </span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">params</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t">        </span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">path</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">atomy-pr</span><span class="t">
</span><span class="t">        </span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">status</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">success</span><span class="t">
</span><span class="t">    </span><span class="py">on_failure</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t">      </span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">put</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">atomy-pr</span><span class="t">
</span><span class="t">      </span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">params</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t">
</span><span class="t">        </span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">path</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">atomy-pr</span><span class="t">
</span><span class="t">        </span><span class="t"></span><span class="t"></span><span class="t"></span><span class="t"></span><span class="nv"></span><span class="py">status</span><span class="t"></span><span class="pi">:</span><span class="t"></span><span class="t"> </span><span class="nv"></span><span class="nv">failure</span></pre></div><p>Custom resource types can override the core resource types, and can be defined
in terms of each other. Also, a custom resource type can use the core type that
it's overriding. This is useful if you want to e.g. provide your own custom
<code>docker-image</code> resource, by overriding the core one (and using it one last
time for the override itself), and then using it for all other custom resource
types.</p>